# -*- coding: utf-8 -*-

from django.db import models
from wal.articulos.models import Articulo
from wal.clientes.models import Cliente
#from wal.control.models import Control
#from wal.expedicion.models import Expedicion
import datetime

PROCESOS_CHOICES = (
        ('C', 'Galvanizado en Caliente'),
        ('F', 'Galvanizado en Electrolítico'),
    )

PRIORIDAD_CHOICES = (
        ('A', 'Alta'),
        ('M', 'Media'),
        ('B', 'Baja'),
    )

FINAL_CHOICES = (
        ('N', 'No Finalizado'),
        ('M', 'No Finalizado - Fuera de Plazo '),
        ('F', 'Finalizado'),
        ('H', 'Finalizado - A entregar'),
        ('I', 'Finalizado - Fuera de Plazo - A entregar'),
        ('G', 'Finalizado - Fuera de Plazo'),
        ('C', 'Cancelado'),
        ('D', 'Cancelado Fuera de Plazo'),
        ('E', 'Cancelado Parcialmente'),
    )

# Create your models here.
class Pedido (models.Model):
    cliente = models.ForeignKey(Cliente,verbose_name="* Cliente",help_text='Nombre del Cliente')
    fecha = models.DateField(verbose_name="* Fecha",help_text='Fecha de emisión del pedido')
    plazo = models.DateField(verbose_name="* Plazo de entrega",help_text='Fecha en la que se debe entregar el pedido')
    proceso = models.CharField(max_length=1,choices=PROCESOS_CHOICES,verbose_name="* Proceso de Galvanizado",help_text='Proceso de Galvanizado por el que pasarán los artículos')
    prioridad = models.CharField(max_length=1,choices=PRIORIDAD_CHOICES,verbose_name="  Prioridad del Pedido",help_text='Prioridad',blank = True,null = True)
    responsable = models.CharField(max_length=50,verbose_name="* Responsable",help_text='Nombre y Apellido del que recibió el pedido')
    nombre = models.CharField(unique=True,max_length=100,blank = True,null = True)
    ot = models.IntegerField()
    finalizado = models.CharField(max_length=1,choices=FINAL_CHOICES,help_text='Finalizado',blank = True,null = True)
    
    def save(self):
        if not self.ot:
#            date = datetime.date.today()
            year = self.fecha.year
            start = datetime.date(year,1,1)
            end = datetime.date(year,12,31)
            if Pedido.objects.filter(proceso=self.proceso, fecha__range=(start,end)):
                last = Pedido.objects.filter(proceso=self.proceso,fecha__range=(start,end))
                last = len(last)
                count = last + 1
            else:
                count = 1
            self.ot = count
        if self.proceso == 'C':
            self.nombre = str(self.cliente) + " (GC" + str(self.ot) + "/" + str(self.fecha.year) + ")"
        else:
            self.nombre = str(self.cliente) + " (GE" + str(self.ot) + "/" + str(self.fecha.year) + ")"
        if not self.finalizado:
            self.finalizado = 'N'
        super(Pedido, self).save()
    
    def __unicode__(self):
        return self.nombre
    
    class Admin:
        pass
    
class DetallePedido (models.Model):
    pedido = models.ForeignKey(Pedido)
    articulo = models.ForeignKey(Articulo,verbose_name="* Artículo",help_text='Nombre del artículo solicitado')    
    cantidad = models.IntegerField(verbose_name="* Cantidad",help_text='Número de artículos solicitados')
    peso = models.FloatField(blank = True,null = True,verbose_name="  Peso Total",help_text='Peso de todos los artículos')
    proceso = models.CharField(max_length=1,choices=PROCESOS_CHOICES,verbose_name="* Proceso de Galvanizado",help_text='Proceso de Galvanizado por el que pasarán los artículos')
    requisitos = models.CharField(max_length=500,blank = True,null = True,verbose_name="  Requisitos",help_text='Requisitos')
    observacion = models.CharField(max_length=500,blank = True,null = True,verbose_name="  Observación",help_text='Observación')
    
    class Admin:
        pass